In a computer network system employing object technology, services are handled by objects. Objects are independent program modules that may include data as well as functionality. Objects may communicate using a common interface called an object request broker (“ORB”) designed according to Common Object Request Broker Architecture (“CORBA”). CORBA is an industry standard architecture for distributed objects. In CORBA, the client makes a request to the ORB which directs the request to the appropriate server and redirects the results back to the client. Each object is identified by an object handle called an interoperable object reference (“IOR”). Typically, an object is located at the server and the client only has the IOR. The same object may be located on several computers but may nevertheless have only one IOR. Upon issuance of a request for an object by way of IOR, the ORB will determine which instance of the object to reference. If an object is co-located at the client, the ORB would typically attempt to use the co-located object preserving efficiency of resources. However, if there is no co-located object or for some reason it is not usable, the ORB uses the information contained in the IOR to communicate to an appropriate server where an instance of the object is located.
Once the ORB determines the remote location for the targeted object, (the object is not located on the computer requesting the object), communication must be established between the two computers. Network communication is established using protocols, which are the rules governing transmitting and receiving of data. Typical protocols include TCP/IP (Transmission Control Protocol/Internet Protocol), ATM (Asynchronous Transfer Mode), HTTP (Hyper Text Transport Protocol), and IIOP (Internet Inter-ORB Protocol). For secure communications, SSL (Secure Sockets Layer) may be employed in conjunction with another protocol.
A remote object reference in a distributed environment may contain a multitude of protocols and/or connectivity options. A client that is attempting communication must select one of these options to establish the connection with the remote object. There may be many constraints and variables associated with such a selection: client middleware infrastructure's support for certain protocols; client or user privileges to use certain communication channels; user preferences for communication channel characteristics; and relative efficiency of protocols. The IOR may identify the one or more protocols that the object it represents recognizes and is able to use. Where more than one protocol is specified, a selection process is needed to determine which protocol to employ. Conventionally, the ORB made this determination by trying different protocols in random order or in a predefined static order. For example, the order may be defined as the order in which the protocol modules were registered or initialized with the system. Another approach is to specify an order of preference among the potential protocols so that the order is fixed at the time of compilation.
What is needed is a more strategic method for selecting protocols. In addition what is needed is a flexible method where the basis for the selection may be set by the user. This invention satisfies these and other needs.